package indi.jp.project.business.jingying.pojo.dto;

import indi.jp.project.core.entity.po.AttachmentPO;
import indi.jp.project.process.entity.FlowTask;

import javax.validation.constraints.Digits;
import javax.validation.constraints.Min;
import javax.validation.constraints.NotBlank;
import java.util.Date;
import java.util.List;

/**
 * 投标DTO
 *
 * @author jiangping
 * @date 2022/5/13
 */
public class BidsDTO {

    /**
     * 主键
     */
    private String id;
    /**
     * 项目ID
     */
    @NotBlank(message = "请选择项目")
    private String projectId;
    /**
     * 项目编码
     */
    @NotBlank(message = "项目编码不能为空")
    private String projectCode;
    /**
     * 项目名称
     */
    @NotBlank(message = "项目名称不能为空")
    private String projectName;
    /**
     * 业务类型
     */
    @NotBlank(message = "业务类型不能为空")
    private String businessType;
    /**
     * 所在地编码
     */
    @NotBlank(message = "项目所在地不能为空")
    private String projectAddrCode;
    /**
     * 所在地名称
     */
    @NotBlank(message = "项目所在地不能为空")
    private String projectAddrName;
    /**
     * 承担部门ID
     */
    @NotBlank(message = "请选择承担部门")
    private String departmentId;
    /**
     * 承担部门编码
     */
    @NotBlank(message = "请选择承担部门")
    private String departmentCode;
    /**
     * 承担部门名称
     */
    @NotBlank(message = "请选择承担部门")
    private String departmentName;
    /**
     * 办事处
     */
    @NotBlank(message = "办事处不能为空")
    private String branchOffice;
    /**
     * 事业部
     */
    @NotBlank(message = "区域事业部不能为空")
    private String division;
    /**
     * 限价
     */
    @NotBlank(message = "限价不能为空")
    @Min(value = 0, message = "限价格式不正确，必须为正数并且小数点后最多两位")
    @Digits(integer = 16, fraction = 2, message = "限价格式不正确，必须为正数并且小数点后最多两位")
    private String priceLimit;
    /**
     * 投标保证金
     */
    @NotBlank(message = "投标保证金不能为空")
    @Min(value = 0, message = "投标保证金格式不正确，必须为正数并且小数点后最多两位")
    @Digits(integer = 16, fraction = 2, message = "投标保证金格式不正确，必须为正数并且小数点后最多两位")
    private String amountOfDeposit;
    /**
     * 保证金缴纳时间
     */
    private Date depositPayDate;
    /**
     * 业主名称
     */
    private String owners;
    /**
     * 联系人
     */
    private String contact;
    /**
     * 联系方式
     */
    private String phone;
    /**
     * 开标负责人
     */
    private String bidCharge;
    /**
     * 开标日期
     */
    private Date bidDate;
    /**
     * 开标地点
     */
    private String bidAddr;
    /**
     * 流程类型编码
     */
    private String flowTypeCode;
    /**
     * 流程状态，以0为起点
     */
    private int state;
    /**
     * 技术标子任务ID
     */
    private String techId;
    /**
     * 技术标计划完成时间
     */
    private Date techPlanDate;
    /**
     * 商务标子任务ID
     */
    private String busId;
    /**
     * 商务标计划完成时间
     */
    private Date busPlanDate;
    /**
     * 技术标流程
     */
    private List<FlowTask> techFlowList;
    /**
     * 商务表流程
     */
    private List<FlowTask> busFlowList;
    /**
     * 当前登陆人
     */
    private String lander;
    /**
     * 附件，新增时因为没有ID，所以一起保存
     */
    private List<AttachmentPO> attachments;

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getProjectId() {
        return projectId;
    }

    public void setProjectId(String projectId) {
        this.projectId = projectId;
    }

    public String getProjectCode() {
        return projectCode;
    }

    public void setProjectCode(String projectCode) {
        this.projectCode = projectCode;
    }

    public String getProjectName() {
        return projectName;
    }

    public void setProjectName(String projectName) {
        this.projectName = projectName;
    }

    public String getBusinessType() {
        return businessType;
    }

    public void setBusinessType(String businessType) {
        this.businessType = businessType;
    }

    public String getProjectAddrCode() {
        return projectAddrCode;
    }

    public void setProjectAddrCode(String projectAddrCode) {
        this.projectAddrCode = projectAddrCode;
    }

    public String getProjectAddrName() {
        return projectAddrName;
    }

    public void setProjectAddrName(String projectAddrName) {
        this.projectAddrName = projectAddrName;
    }

    public String getDepartmentId() {
        return departmentId;
    }

    public void setDepartmentId(String departmentId) {
        this.departmentId = departmentId;
    }

    public String getDepartmentCode() {
        return departmentCode;
    }

    public void setDepartmentCode(String departmentCode) {
        this.departmentCode = departmentCode;
    }

    public String getDepartmentName() {
        return departmentName;
    }

    public void setDepartmentName(String departmentName) {
        this.departmentName = departmentName;
    }

    public String getBranchOffice() {
        return branchOffice;
    }

    public void setBranchOffice(String branchOffice) {
        this.branchOffice = branchOffice;
    }

    public String getDivision() {
        return division;
    }

    public void setDivision(String division) {
        this.division = division;
    }

    public String getPriceLimit() {
        return priceLimit;
    }

    public void setPriceLimit(String priceLimit) {
        this.priceLimit = priceLimit;
    }

    public String getAmountOfDeposit() {
        return amountOfDeposit;
    }

    public void setAmountOfDeposit(String amountOfDeposit) {
        this.amountOfDeposit = amountOfDeposit;
    }

    public Date getDepositPayDate() {
        return depositPayDate;
    }

    public void setDepositPayDate(Date depositPayDate) {
        this.depositPayDate = depositPayDate;
    }

    public String getOwners() {
        return owners;
    }

    public void setOwners(String owners) {
        this.owners = owners;
    }

    public String getContact() {
        return contact;
    }

    public void setContact(String contact) {
        this.contact = contact;
    }

    public String getPhone() {
        return phone;
    }

    public void setPhone(String phone) {
        this.phone = phone;
    }

    public String getBidCharge() {
        return bidCharge;
    }

    public void setBidCharge(String bidCharge) {
        this.bidCharge = bidCharge;
    }

    public Date getBidDate() {
        return bidDate;
    }

    public void setBidDate(Date bidDate) {
        this.bidDate = bidDate;
    }

    public String getBidAddr() {
        return bidAddr;
    }

    public void setBidAddr(String bidAddr) {
        this.bidAddr = bidAddr;
    }

    public String getFlowTypeCode() {
        return flowTypeCode;
    }

    public void setFlowTypeCode(String flowTypeCode) {
        this.flowTypeCode = flowTypeCode;
    }

    public int getState() {
        return state;
    }

    public void setState(int state) {
        this.state = state;
    }

    public String getTechId() {
        return techId;
    }

    public void setTechId(String techId) {
        this.techId = techId;
    }

    public Date getTechPlanDate() {
        return techPlanDate;
    }

    public void setTechPlanDate(Date techPlanDate) {
        this.techPlanDate = techPlanDate;
    }

    public String getBusId() {
        return busId;
    }

    public void setBusId(String busId) {
        this.busId = busId;
    }

    public Date getBusPlanDate() {
        return busPlanDate;
    }

    public void setBusPlanDate(Date busPlanDate) {
        this.busPlanDate = busPlanDate;
    }

    public List<FlowTask> getTechFlowList() {
        return techFlowList;
    }

    public void setTechFlowList(List<FlowTask> techFlowList) {
        this.techFlowList = techFlowList;
    }

    public List<FlowTask> getBusFlowList() {
        return busFlowList;
    }

    public void setBusFlowList(List<FlowTask> busFlowList) {
        this.busFlowList = busFlowList;
    }

    public String getLander() {
        return lander;
    }

    public void setLander(String lander) {
        this.lander = lander;
    }

    public List<AttachmentPO> getAttachments() {
        return attachments;
    }

    public void setAttachments(List<AttachmentPO> attachments) {
        this.attachments = attachments;
    }
}
